﻿using System;
namespace IFramework
{
    public interface IStateTransition
    {
        StateTransitionType TransitionType { get; set; }         //过渡类型
        IFSMState HeadState { get; }                   //头状态
        IFSMState TrailState { get; }                  //尾状态
        Func<bool> ConditionHandle { get; }          //过度条件
        void SetHeadState(IFSMState state);
        void SetTrailState(IFSMState state);       
        bool IsMetCondition { get; }                 //状态过度条件是否成立
        void BindCondition(ITransitionCondtion condtion);       //设置过渡条件
        void BindCustomCondition(Func<bool> condtion);          //自定义条件
        IFSMState GoToNextState();
    }
}